const axios = require('axios')
const bodyParser = require('body-parser')

const url = 'https://u.y.qq.com/cgi-bin/musicu.fcg'
const headers = {
  origin: 'https://y.qq.com/',
  'sec-fetch-site': 'same-site',
  'access-control-allow-origin': 'https://y.qq.com',
  'access-control-expose-headers': 'Area',
  referer: 'https://c.y.qq.com/'
}
const vueAxios = axios.create({
  headers,
  timeout: 3000
})
const sendAxiosAjax = (url, params) => {
  return Promise.resolve(
    vueAxios.get(url, {
      params
    })
  )
}
module.exports = function before(app, server, compiler) {
  // 获取轮播图
  app.get('/api/getSliderList', (req, res) => {
    sendAxiosAjax(url, req.query)
      .then(response => {
        return res.json(response.data)
      })
      .catch(e => {
        console.log(e)
      })
  })
  // 获取热歌歌单
  app.get('/api/getDiscList', (req, res) => {
    const url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg'
    axios.get(url, {
      headers: {
        referer: 'https://c.y.qq.com/',
        host: 'c.y.qq.com'
      },
      params: req.query
    }).then((response) => {
      res.json(response.data)
    }).catch((e) => {
      console.log(e)
    })
  })
  // pc端歌手列表
  app.get('/api/getSingerList', (req, res) => {
    sendAxiosAjax(url, req.query)
      .then(response => {
        return res.json(response.data)
      })
      .catch(e => {
        console.log(e)
      })
  })
  // 获取歌手详情
  app.get('/api/getSingerSongList', (req, res) => {
    sendAxiosAjax(url, req.query)
      .then(response => {
        return res.json(response.data)
      })
      .catch(e => {
        console.log(e)
      })
  })
  app.get('/api/getCdInfo', (req, res) => {
    const url = 'https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg'
    axios.get(url, {
      headers: {
        referer: 'https://c.y.qq.com/',
        host: 'c.y.qq.com'
      },
      params: req.query
    }).then((response) => {
      let ret = response.data
      if (typeof ret === 'string') {
        const reg = /^\w+\(({.+})\)$/
        const matches = ret.match(reg)
        if (matches) {
          ret = JSON.parse(matches[1])
        }
      }
      res.json(ret)
    }).catch((e) => {
      console.log(e)
    })
  })

  app.get('/api/lyric', function(req, res) {
    const url = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg'

    axios.get(url, {
      headers: {
        referer: 'https://c.y.qq.com/',
        host: 'c.y.qq.com'
      },
      params: req.query
    }).then((response) => {
      let ret = response.data
      if (typeof ret === 'string') {
        const reg = /^\w+\(({.+})\)$/
        const matches = ret.match(reg)
        if (matches) {
          ret = JSON.parse(matches[1])
        }
      }
      res.json(ret)
    }).catch((e) => {
      console.log(e)
    })
  })

  app.post('/api/getPurlUrl', bodyParser.json(), function(req, res) {
    const url = 'https://u.y.qq.com/cgi-bin/musicu.fcg'
    axios.post(url, req.body, {
      headers: {
        referer: 'https://y.qq.com/',
        origin: 'https://y.qq.com',
        'Content-type': 'application/x-www-form-urlencoded'
      }
    }).then((response) => {
      res.json(response.data)
    }).catch((e) => {
      console.log(e)
    })
  })

  app.get('/api/search', function(req, res) {
    const url = 'https://c.y.qq.com/soso/fcgi-bin/search_for_qq_cp'
    axios.get(url, {
      headers: {
        referer: 'https://c.y.qq.com/',
        host: 'c.y.qq.com'
      },
      params: req.query
    }).then((response) => {
      res.json(response.data)
    }).catch((e) => {
      console.log(e)
    })
  })
}
